#pragma once

#include <iostream>
#include <vector>
#include <functional>
#include <ctime>

////////////////debug/////////////////////
void PrintLog()
{
    std::cout << "我是一个打印日志的任务" << std::endl;
}

void Download()
{
    std::cout << "我是一个下载的任务" << std::endl;
}

void Upload()
{
    std::cout << "我是一个上传的任务" << std::endl;
}
//////////////////////////////////////

class TaskManager
{
public:
    TaskManager()
    {
        srand(time(nullptr));
    }
    void Register(const std::function<void()> &fun)
    {
        _tasks.push_back(fun);
    }

    int Code()
    {
        return rand()%_tasks.size();
    }

    void Execute(int code)
    {
        if (code >= 0 && code < _tasks.size())
        {
            _tasks[code]();
        }
    }

private:
    std::vector<std::function<void()>> _tasks;
};